home *** CD-ROM | disk | FTP | other *** search
/ ftp.cs.arizona.edu / ftp.cs.arizona.edu.tar / ftp.cs.arizona.edu / icon / newsgrp / group98a.txt / 000150_icon-group-sender _Mon Mar 30 08:31:14 1998.msg < prev    next >
Internet Message Format  |  2000-09-20  |  4KB

  1. Return-Path: <icon-group-sender>
  2. Received: from kingfisher.CS.Arizona.EDU (kingfisher.CS.Arizona.EDU [192.12.69.239])
  3.     by baskerville.CS.Arizona.EDU (8.8.8/8.8.7) with SMTP id IAA25482
  4.     for <icon-group-addresses@baskerville.CS.Arizona.EDU>; Mon, 30 Mar 1998 08:31:13 -0700 (MST)
  5. Received: by kingfisher.CS.Arizona.EDU (5.65v4.0/1.1.8.2/08Nov94-0446PM)
  6.     id AA29371; Mon, 30 Mar 1998 08:31:13 -0700
  7. Message-Id: <199803281452.HAA29037@orpheus.gemini.edu>
  8. From: swampler@noao.edu (Steve Wampler)
  9. Date: Sat, 28 Mar 1998 07:52:39 MST
  10. In-Reply-To: "William B. Clodius"'s mail message of Mar 27,  1:49pm.
  11. X-Mailer: Mail User's Shell (7.2.3 5/22/91)
  12. To: "William B. Clodius" <wclodius@lanl.gov>
  13. Subject: Re: Icon and recursion
  14. Cc: icon-group@optima.CS.Arizona.EDU
  15. Errors-To: icon-group-errors@optima.CS.Arizona.EDU
  16. Status: RO
  17. Content-Length: 2994
  18.  
  19. On Mar 27 at  1:49pm, "William B. Clodius" writes:
  20. } Hi:
  21. } I have been trying to learn a little of Icon from information available
  22. } over the net, and have been having trouble trying to transcribe some code
  23. } from other languages to Icon. I have, so far, not had any problems
  24. } translating procedural style code. The troublesome code has been primarilly
  25. } Lisp or Lisp style benchmarks that rely heavily on recursion, i.e. the Tak
  26. } benchmark and the change benchmark
  27. } (http://www.webcom.com/nazgul/change.html). The Tak bencghmark appears to
  28. } exhaust the internal stack before printing any output. Given the nature of
  29. } the Tak benchmark I may not be able to do something to make it work. The
  30. } Change benchmark, gives incorrect output and inserted write statements
  31. } suggest an order of execution that I do not understand at all.
  32.  
  33. Odd, I've recursed very heavily in Icon (a lisp interpreter, recursive
  34. descent parser, etc) with no problems.  What machine/OS are you using?
  35. (I use Unix/Linux exclusively, so you may be hitting a configuration
  36. limit under some other OS.)
  37.  
  38. } As a result I have the following questions:
  39. } 1. What are the semantics of Icon's argument passing mechanism, i.e., by
  40. } value, by reference, copy-in/copy-out, no modifiable aliasing, by name,
  41. } lazy, eager?
  42.  
  43. By value, but remember that Icon considers the 'value' of a structure
  44. (list, table, set, record) to be its address.
  45.  
  46. } 2. What is the meaning of the "local" statement, i.e., does it ensure that
  47. } a value is saved from call to call?
  48.  
  49. No, just that the reference won't conflict with any global variable of the
  50. same name.  "static" is a local variable that retains values across
  51. calls.  non-static local variables are created on procedure invocation
  52. and destroyed on procedure return or failure.  (Note that 'suspending'
  53. from a procedure is neither a return or a failure, so local variables
  54. retain values during a suspend-resume sequence.)
  55.  
  56. } 3. Can Icon handle recursion, and are there any tricks I should be aware of
  57. } either to make recursion work or translate recursive code into a form Icon
  58. } can handle? (Note Tak and Change are not tail recursive.)
  59.  
  60. Icon handles recursion just fine.  I'd be interested in seeing the code
  61. that is causing you problems.
  62.  
  63. } 4. Is there example code available which can give more insight into
  64. } iterators and their semantics?
  65.  
  66. Probably, I assume you have the Icon book (3rd edition).  There is
  67. the "Icon Implementation" book (don't have the title handy right now,
  68. which though dated in some of the implementation details, does explain
  69. how generators,iterators, and GDE all work.  I have tons of code that
  70. use them heavily, but you'd need to spend some time examining the code
  71. to get much insight (the code isn't written to illustrate generators
  72. and goal-directed evaluation, but to use those features).
  73.  
  74.  
  75. -- 
  76. Steve Wampler - swampler@gemini.edu [Gemini 8m Telescopes Project (under AURA)]
  77. The gods that smiled at your birth are now laughing openly. (Fortune Cookie)
  78.